const mongoose = require('mongoose');
const { mongoUrl } = require('../serverOpt');

mongoose.connect(mongoUrl);
const db = mongoose.connection;

db.on('error', console.error.bind(console, '数据库 连接错误：'));

db.once('open', function () {
	console.log('数据库 已连接');
});

// module.exports = db;//如果使用db 如检查状态等
module.exports = mongoose;

// mongoose.connect('mongodb://127.0.0.1/ceshinew', {
//     // useNewUrlParser: true,//确保链接地址被正确解析  //从 MongoDB Node.js 驱动的 4.0.0 版本开始 弃用
//     // useUnifiedTopology: true,//处理连接、故障转移等更可靠 ////从 MongoDB Node.js 驱动的 4.0.0 版本开始 弃用
//     // useFindAndModify: false,//使用标准的 findOneAndUpdate() 方法，而不是 原生的findAndModify()//新版mongoose移除此参数
//     // useCreateIndex: true//定义索引时使用 createIndex() 而不是过时的 ensureIndex(),提升性能////新版mongoose移除此参数
// });

/*
以下是验证密码 多次输错 锁定
const bcrypt = require('bcryptjs');

// 存储用户登录尝试的次数和锁定状态
let userAttempts = {
    // userName: { attempts: 0, lockUntil: null }
};

async function attemptLogin(userName, inputPassword) {
    // 检查用户是否已被锁定
    if (userAttempts[userName] && userAttempts[userName].lockUntil && userAttempts[userName].lockUntil > Date.now()) {
        throw new Error('您的账户已被锁定，请稍后再试');
    }

    // 假设我们从数据库获取用户信息
    const user = getUserFromDatabase(userName);

    // 验证密码
    const isMatch = await bcrypt.compare(inputPassword, user.userPass);
    if (isMatch) {
        // 重置尝试次数
        userAttempts[userName] = { attempts: 0, lockUntil: null };
        return true; // 登录成功
    } else {
        // 增加尝试次数
        let attempts = (userAttempts[userName] && userAttempts[userName].attempts) || 0;
        attempts++;

        if (attempts >= 3) {
            // 锁定账户，例如30分钟
            userAttempts[userName] = { attempts: attempts, lockUntil: Date.now() + 30 * 60 * 1000 };
        } else {
            userAttempts[userName] = { attempts: attempts, lockUntil: null };
        }

        throw new Error('密码错误');
    }
}

async function run() {
    try {
        await attemptLogin('rootadmin', 'admin123..');
        console.log('登录成功！');
    } catch (e) {
        console.error(e.message);
    }
}

run();



*/
